package com.jfinal.plugin.sqlbuilder;

import java.util.List;
import java.util.Map;

/**
 * 自定义SQL函数。
 */
public interface IFunction {

    /**
     * 返回替换后的SQL片段。<br/>
     * 举例：若SQL语句中，需要将"#(like(name))"替换为"like ?",那么参数args为"name"，返回值为"like ?"
     *
     * @param args 函数参数列表，多个参数名用逗号分隔。
     * @return 返回替换后的字符串。
     */
    String replaceSql(String args);

    /**
     * 返回函数对应的参数值。
     *
     * @param args   函数参数列表，比如：name
     * @param params 构建SQL需要的所有参数。
     * @return 当前函数需要使用的值。
     */
    List<Object> getParams(String args, Map<String, Object> params);

}
